WebACLAssociation를 사용하여 AWS WAF와 Amazon CloudFront 연동 시 발생하는 문제 해결
안녕하세요 클래스메소드 김재욱(Kim Jaewook) 입니다. 이번에는 WebACLAssociation를 사용하여 AWS WAF와 Amazon CloudFront 연동 시 발생하는 문제를 해결하는 방법에 대해서 정리해 봤습니다.
문제 발생
The ARN isn't valid. A valid ARN begins with arn: and includes other information separated by colons or slashes
AWS WAF와 Amazon CloudFront를 연동하기 위해 WebACLAssociation를 사용하여 AWS WAF 생성을 시도하면 유효하지 않는 ARN이라고 출력되며 스택 생성에 실패합니다.
SampleWebACLAssociation: Type: 'AWS::WAFv2::WebACLAssociation' Properties: WebACLArn: ExampleARNForWebACL ResourceArn: ExampleARNForRegionalResource
샘플 예제를 보면 ResourceArn에 CloudFront의 ARN을 가져오면 해결될 것 같지만 정확하게 CloudFront의 ARN을 지정해도 유효하지 않는 ARN이라고 에러가 발생합니다.
문제 해결
For Amazon CloudFront, don't use this resource. Instead, use your CloudFront distribution configuration. To associate a web ACL with a distribution, provide the Amazon Resource Name (ARN) of the AWS::WAFv2::WebACL to your CloudFront distribution configuration
공식 문서를 조금 확인해 보면 WebACLAssociation은 CloudFront에 사용하지 말라는 문구를 확인할 수 있습니다.
AWS WAF와 Amazon CloudFront를 연동하기 위해서는 WAF에서 WebACLAssociation을 사용하는 것이 아니라 CloudFront에서 WebACLId를 사용할 필요가 있습니다.
CloudFrontDistribution: Type: "AWS::CloudFront::Distribution" Properties: DistributionConfig: WebACLId: !ImportValue WebACLARN
WebACLId는 CloudFront::Distribution을 생성할 때 DistributionConfig 옵션 값으로 넣어줄 수 있습니다.
AWS WAF의 ARN을 지정하기만 하면 끝입니다.
WebACLId를 사용하여 Amazon CloudFront를 생성한 다음, AWS WAF를 확인해 보면 성공적으로 연동되었음을 확인할 수 있습니다.
본 블로그 게시글을 읽고 궁금한 사항이 있으신 분들은 jaewookkim533@yahoo.com로 보내주시면 감사하겠습니다.